<script>
	import { computed, watch } from 'vue'
	import initApp from '@/common/appInit.js';
	import openApp from '@/common/openApp.js';
	// #ifdef H5
	openApp() //创建在h5端全局悬浮引导用户下载app的功能
	// #endif
	import uniIdPageInit from '@/uni_modules/uni-id-pages/init.js';
	import { GlobalStore } from "@/store/index.js";
	import { ConfigStore } from "@/store/modules/config.js";
	import { LoginStore } from "@/store/modules/login.js";
	const uniIdCo = uniCloud.importObject("uni-id-co", { customUI: true })
	export default {
		globalData: {
			shareShow: true,
			searchText: '',
			appVersion: {},
			config: {},
			// $i18n: {},
			// $t: {},
		},
		onLaunch: async function(options) {
			const userInfo = computed(() => (LoginStore().userInfo))
			const hasLogin = computed(() => (LoginStore().hasLogin))
			uni.onTabBarMidButtonTap(() => {
				GlobalStore().changebomShow(!GlobalStore().bomShow)
			})

			// 初始化调用缓存数据（该调用在H5页面的时候不开启）
			ConfigStore().getRequest()

			// 弹窗公告
			// #ifdef APP
			const notice = computed(() => ConfigStore()?.notice[0])

			function isObjectEmpty(obj) {
				return Object.keys(obj).length === 0;
			}
			// 如果公告没有数据，就不显示，或者用户点击了，不在提示，一天内就不在显示，如果有新公告就立即弹出
			const noticeState = computed(() => ConfigStore()?.noticeState)
			if (!isObjectEmpty(notice.value || {}) && noticeState.value) {
				uni.navigateTo({
					url: `/pages/notice/notice`,
					fail: (err) => {
						console.error('弹出公告失败', err)
					}
				})
			}
			// #endif

			// 实时监听数据的变化，并重新调用接口
			uni.onPushMessage((res) => {
				console.log("收到推送消息：", res) //监听推送消息
				if(res?.data?.payload?.name=="uni-im"){
					console.log(res?.data?.payload?.name);
					uni.$emit('uniIm',res?.data?.payload)
				}
				if (res.data.title.length < 20) {
					if (res.data?.payload?.name == "resetUpScroll") {
						uni.$emit('resetUpScroll')
					} else {
						ConfigStore()[res.data.payload.name]()
					}
				} else {
					LoginStore()[res.data.payload.name]()
				}
			})

			console.log('App Launch')
			// this.globalData.$i18n = this.$i18n
			// this.globalData.$t = str => this.$t(str)
			initApp();
			uniIdPageInit()

			// token续期

			if (hasLogin.value) {
				console.log("token续期了", uni.getStorageSync('uni_id_token_expired'));
				await uniIdCo.refreshToken()
			}


			// #ifdef APP-PLUS
			//checkIsAgree(); APP端暂时先用原生默认生成的。目前，自定义方式启动vue界面时，原生层已经请求了部分权限这并不符合国家的法规
			// #endif

			// #ifdef H5
			// checkIsAgree(); // 默认不开启。目前全球，仅欧盟国家有网页端同意隐私权限的需要。如果需要可以自己去掉注视后生效
			// #endif

			// #ifdef APP-PLUS
			//idfa有需要的用户在应用首次启动时自己获取存储到storage中
			var idfa = '';
			var manager = plus.ios.invoke('ASIdentifierManager', 'sharedManager');
			if (plus.ios.invoke(manager, 'isAdvertisingTrackingEnabled')) {
				var identifier = plus.ios.invoke(manager, 'advertisingIdentifier');
				idfa = plus.ios.invoke(identifier, 'UUIDString');
				plus.ios.deleteObject(identifier);
			}
			plus.ios.deleteObject(manager);
			console.log('idfa = ' + idfa);
			// #endif
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

<style lang="scss">
	@import url("./styles/iconfont.css");
	@import url("./static/fonts/iconfont.css");
	/*每个页面公共css */
	@import url("./styles/common.css");
	@import url("./styles/vivify.css");

	uni-modal {
		.uni-modal {
			border-radius: 20rpx;
		}
	}
</style>